Apache Commons IO লাইব্রেরি ফাইলের তুলনা (comparison) করার জন্য শক্তিশালী টুল সরবরাহ করে। ফাইলের মধ্যে বিভিন্ন ধরনের তুলনা করা যেতে পারে, যেমন ফাইলের কন্টেন্ট তুলনা, ফাইলের আকার তুলনা, বা ফাইলের মেটাডেটা তুলনা। এই পোস্টে, আমরা Apache Commons IO ব্যবহার করে multiple file comparison techniques নিয়ে আলোচনা করব।
1. FileUtils.contentEquals() – ফাইল কন্টেন্ট তুলনা
FileUtils.contentEquals() মেথডটি দুটি ফাইলের কন্টেন্ট তুলনা করার জন্য ব্যবহৃত হয়। এটি দুটি ফাইলের কন্টেন্ট একে অপরের সাথে তুলনা করে, এবং যদি উভয় ফাইলের কন্টেন্ট একেবারে একরকম হয়, তাহলে এটি true রিটার্ন করবে।
ফাইল কন্টেন্ট তুলনা উদাহরণ:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileComparisonExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// ফাইল কন্টেন্ট তুলনা
boolean isEqual = FileUtils.contentEquals(file1, file2);
if (isEqual) {
System.out.println("ফাইলের কন্টেন্ট একই!");
} else {
System.out.println("ফাইলের কন্টেন্ট আলাদা!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
FileUtils.contentEquals(file1, file2): দুটি ফাইলের কন্টেন্ট তুলনা করে। যদি দুটি ফাইলের কন্টেন্ট একরকম হয়, এটি true রিটার্ন করবে, অন্যথায় false।- এটি IOException ছুঁড়ে ফেলতে পারে, তাই আমরা try-catch ব্লক ব্যবহার করেছি।
Output:
ফাইলের কন্টেন্ট একই!
2. FileUtils.sizeOf() – ফাইল আকার তুলনা
ফাইলের আকার তুলনা করতে FileUtils.sizeOf() মেথডটি ব্যবহার করা যেতে পারে। এটি একটি ফাইলের আকার (size) বাইটস (bytes) হিসেবে রিটার্ন করে। ফাইলের আকার তুলনা করে ফাইল দুটি একই আকারের কিনা তা যাচাই করা যায়।
ফাইল আকার তুলনা উদাহরণ:
import org.apache.commons.io.FileUtils;
import java.io.File;
public class FileSizeComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// ফাইল আকার তুলনা
long fileSize1 = FileUtils.sizeOf(file1);
long fileSize2 = FileUtils.sizeOf(file2);
if (fileSize1 == fileSize2) {
System.out.println("ফাইলের আকার সমান!");
} else {
System.out.println("ফাইলের আকার আলাদা!");
}
}
}
ব্যাখ্যা:
FileUtils.sizeOf(file)মেথডটি একটি ফাইলের আকার বাইটস হিসেবে রিটার্ন করে।- আমরা দুইটি ফাইলের আকার তুলনা করে দেখতে পারি তারা সমান কি না।
Output:
ফাইলের আকার সমান!
3. FileUtils.isFileOlder() – ফাইলের বয়স তুলনা
FileUtils.isFileOlder() মেথডটি দুটি ফাইলের মধ্যে কোন ফাইলের বয়স (modification time) বেশি তা তুলনা করতে ব্যবহৃত হয়। এটি একটি ফাইলের সংশোধিত সময় এবং অন্য ফাইলের সংশোধিত সময়ের তুলনা করে বলে দেয় কোনটি পুরানো।
ফাইলের বয়স তুলনা উদাহরণ:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileAgeComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// ফাইলের বয়স তুলনা
boolean isFile1Older = FileUtils.isFileOlder(file1, file2);
if (isFile1Older) {
System.out.println("file1.txt পুরানো!");
} else {
System.out.println("file2.txt পুরানো!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
FileUtils.isFileOlder(file1, file2): এটি দুটি ফাইলের সংশোধিত সময় (modification time) তুলনা করে।- যদি
file1পুরানো হয়, তাহলে true রিটার্ন করবে, অন্যথায় false।
Output:
file1.txt পুরানো!
4. FileUtils.directoryContains() – ডিরেক্টরি তুলনা
FileUtils.directoryContains() মেথডটি ব্যবহার করে আপনি দুটি ডিরেক্টরির মধ্যে তুলনা করতে পারেন। এটি চেক করে যে একটি ডিরেক্টরি অন্য ডিরেক্টরির মধ্যে অন্তর্ভুক্ত (contains) কি না।
ডিরেক্টরি তুলনা উদাহরণ:
import org.apache.commons.io.FileUtils;
import java.io.File;
public class DirectoryComparison {
public static void main(String[] args) {
File directory1 = new File("dir1");
File directory2 = new File("dir2");
// ডিরেক্টরি তুলনা
boolean isContained = FileUtils.directoryContains(directory1, directory2);
if (isContained) {
System.out.println("dir2 dir1 এর মধ্যে রয়েছে!");
} else {
System.out.println("dir2 dir1 এর মধ্যে নেই!");
}
}
}
ব্যাখ্যা:
FileUtils.directoryContains(directory1, directory2): এটি চেক করে যেdirectory2কিdirectory1এর মধ্যে রয়েছে।trueরিটার্ন করলে,directory2directory1এর মধ্যে থাকবে।
Output:
dir2 dir1 এর মধ্যে রয়েছে!
5. MD5 অথবা SHA1 হ্যাশ ব্যবহার করে ফাইলের তুলনা
ফাইলের কন্টেন্ট তুলনা করার জন্য আপনি MD5 বা SHA1 হ্যাশ ব্যবহার করতে পারেন। ফাইলের হ্যাশ তৈরি করে আপনি তাদের কন্টেন্ট তুলনা করতে পারেন। এটি ফাইলের কন্টেন্ট সম্পূর্ণভাবে তুলনা করার জন্য অত্যন্ত কার্যকরী পদ্ধতি।
MD5 হ্যাশ ব্যবহার করে ফাইল তুলনা উদাহরণ:
import org.apache.commons.io.FileUtils;
import org.apache.commons.codec.digest.DigestUtils;
import java.io.File;
import java.io.IOException;
public class FileHashComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// MD5 হ্যাশ তৈরি করা
String file1Hash = DigestUtils.md5Hex(FileUtils.readFileToByteArray(file1));
String file2Hash = DigestUtils.md5Hex(FileUtils.readFileToByteArray(file2));
if (file1Hash.equals(file2Hash)) {
System.out.println("ফাইলের কন্টেন্ট এক!" );
} else {
System.out.println("ফাইলের কন্টেন্ট আলাদা!" );
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
DigestUtils.md5Hex(): এটি একটি ফাইলের MD5 হ্যাশ তৈরি করে।FileUtils.readFileToByteArray(file): এটি ফাইলটিকে byte array এ রূপান্তরিত করে এবং পরে MD5 হ্যাশ তৈরী করতে সাহায্য করে।
Output:
ফাইলের কন্টেন্ট এক!
Apache Commons IO লাইব্রেরি ফাইল তুলনা করার জন্য বেশ কিছু শক্তিশালী পদ্ধতি সরবরাহ করে। আপনি FileUtils.contentEquals(), FileUtils.sizeOf(), FileUtils.isFileOlder() ইত্যাদি ব্যবহার করে ফাইলের কন্টেন্ট, আকার, বয়স এবং অন্যান্য বৈশিষ্ট্যের তুলনা করতে পারেন। এছাড়াও, আপনি MD5 বা SHA1 হ্যাশ ব্যবহার করে ফাইলের কন্টেন্ট তুলনা করতে পারেন, যা কার্যকরী এবং নির্ভুল ফলাফল দেয়। Apache Commons IO লাইব্রেরি ফাইল ম্যানিপুলেশন এবং তুলনা করার জন্য একটি খুবই কার্যকরী টুল।
Read more